package com.lyn.chapter3.demo2;

/**
 * 多线程不可用，因为第一个if判断不在临界区中，因此对有序性无法保证。
 * 做第一个if判断时很可能得到一个已创建分配内存空间、但为调用构造函数进行初始化的对象
 * @author mac
 *
 */
public class IncorrectDCLSingleton {
	private static IncorrectDCLSingleton instance = null;
	private IncorrectDCLSingleton() {
		//什么也不做
	}
	 public static IncorrectDCLSingleton getInstance() {
		 if(null == instance) {
			 synchronized (IncorrectDCLSingleton.class) {
				if(null == instance) {
					instance = new IncorrectDCLSingleton();
				}
			 }
		 }
		 return instance;
	 }
	 
	 public void someService() {
		 //省略其他代码
	 }
}
